package leetcode_ago.string_and_array;

import java.util.Arrays;

/**
 * 给你一个数组 nums和一个值val，你需要原地移除所有数值等于val的元素，并返回移除后数组的新长度。
 * 不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
 * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素
 * 0 <= nums.length <= 100
 * 0 <= nums[i] <= 50
 * 0 <= val <= 100
 */

/**
 * 定义j和i,初始值分别是0。
 * 使用i下标来遍历数组的元素，如果元素和需要的val相等，则i++.
 * 不相等则把i下标的值赋值给j下标。最后返回j的值即可。
 */
public class Num27_RemoveElement {
    public static int removeElement(int[] nums, int val) {
        if(nums==null||nums.length==0){
            return 0;
        }
        //数组中一定存在元素
        int j=0;
        for (int i=0; i < nums.length; ) {
            if(nums[i]==val){
                i++;
            }else{
                nums[j]=nums[i];
                i++;
                j++;
            }
        }
        for (int i = j; i <nums.length ; i++) {
            nums[i]=0;
        }
        System.out.println(Arrays.toString(nums));
        return j;
    }

    public static void main(String[] args) {
        int[] nums={1,2,1,1,3,5,1,6};
        int num=removeElement(nums,1);
        System.out.println(num);
    }
}
